對一位C/C++ programmer來說,javascript的anonymous function(匿名者函式)是容易讓人困惑的存在。
如何使用沒有identifier的function? 有什麼好處? 在這裡做個筆記。
javascript提供3種宣告function的作法
Function Declarations
一般function的作法,需要提供function name,範例如下
1 | function multiply(a, b) { |
The Function() Constructor
類似C++的建構者函式 (constructor),只不過是用在function上
1 | var mulitplyFunc = new Function("a", "b", "return a * b"); |
一般來說不建議用此方式宣告函式
Function Expressions
也就是這篇的主角,function expression不需要function name,可視為variable
1 | var mulitplyFunc = function (a, b) { return a * b; }; |
使用anonymous function的好處
- 可用來實做Closure,實現design pattern的工廠方法
- 簡化程式碼,提高易讀性
之前要用C++實作工廠方法時,需要dynamic binding的技術,確實要花點心思
下一篇討論closure
參考來源:
Javascript function基本教學
關於lambda觀念的說明
比較ruby和js的anonymous function
Javascript function declarations vs function operators